package com.fkcai.hansoul.service;

import com.fkcai.hansoul.model.entity.User;
import com.fkcai.hansoul.model.vo.user.UserBasicVo;
import com.fkcai.hansoul.model.vo.user.UserFullVo;

import java.time.LocalDate;

/**
 * 用户业务逻辑接口，定义核心方法
 * loginUser
 */
public interface UserService {
	/**
	 * 用户登录方法
	 *
	 * @param phone    手机号
	 * @param password 密码
	 */
	UserBasicVo loginUser (String phone, String password);
	
	/**
	 * 用户注册方法
	 *
	 * @param phone    手机号
	 * @param password 密码
	 */
	UserBasicVo registerUser (String phone, String password);
	
	/**
	 * 用户忘记密码方法
	 *
	 * @param phone            手机号
	 * @param verificationCode 验证码
	 * @param newPassword      新密码
	 */
	UserBasicVo forgetPassword (String phone, String verificationCode, String newPassword);
	
	/**
	 * 用户修改密码方法
	 *
	 * @param phone            手机号
	 * @param oldPassword      旧密码
	 * @param verificationCode 验证码
	 * @param newPassword      新密码
	 */
	UserBasicVo updatePassword (String phone, String oldPassword, String verificationCode, String newPassword);
	
	/**
	 * 获取用户详细信息
	 *
	 * @param userId 用户 id
	 */
	UserFullVo getUserInfo (Integer userId);
	
	/**
	 * 更新上传用户头像
	 *
	 * @param userId 用户 id
	 * @param avatarUrl 头像地址
	 */
	void updateUserAvatar (Integer userId, String avatarUrl);
	
	/**
	 * 更新上传用户封面
	 *
	 * @param userId 用户 id
	 * @param coverUrl 封面地址
	 */
	void updateUserCover (Integer userId, String coverUrl);
	
	/**
	 * 更新用户名
	 *
	 * @param userId   用户 id
	 * @param username 用户名
	 */
	void updateUsername (Integer userId, String username);
	
	/**
	 * 更新用户性别
	 *
	 * @param userId 用户 id
	 * @param gender 用户 性别
	 */
	void updateGender (Integer userId, String gender);
	
	/**
	 * 更新用户生日
	 *
	 * @param userId   用户 id
	 * @param birthday 用户生日
	 */
	void updateBirthday (Integer userId, LocalDate birthday);
	
	/**
	 * 更新用户地区
	 *
	 * @param userId   用户 id
	 * @param location 用户地址
	 */
	void updateLocation (Integer userId, String location);
	
	/**
	 * 更新用户简介
	 *
	 * @param userId 用户 id
	 * @param bio    用户简介
	 */
	void updateBio (Integer userId, String bio);
	
}
